In traditional software design, datasets are created specifically for predefined data fields and types. In order to manage heterogeneous data in a system, either multiple datasets are created for different data types, or a large dataset is used to encompass all possible data fields of every possible data types. These approaches are inefficient and inflexible to change.